package com.springboot.middleware.middleware_lock.server.service;

import com.springboot.middleware.middleware_lock.server.dto.UserAccountDto;

public interface DataBaseLockService {
    /**
     * 用户账户提取金额处理
     *
     * @param dto UserAccountDto
     * @throws Exception 账户不存在或账户余额不足
     */
    void takeMoney(UserAccountDto dto) throws Exception;

    /**
     * 用户账户提取金额处理-乐观锁
     *
     * @param dto UserAccountDto
     * @throws Exception 账户不存在或账户余额不足
     */
    void takeMoneyWithLock(UserAccountDto dto) throws Exception;

    /**
     * 用户账户提取金额处理-悲观锁
     *
     * @param dto UserAccountDto
     * @throws Exception 账户不存在或账户余额不足
     */
    void takeMoneyWithNegativeLock(UserAccountDto dto) throws Exception;
}
